package com.fac.service;

import com.fac.dto.UsersDTO;
import com.fac.dto.UsersLoginDTO;
import com.fac.dto.UsersPageQueryDTO;
import com.fac.dto.UsersRegisterDTO;
import com.fac.entity.Users;
import com.fac.result.PageResult;
import org.apache.ibatis.annotations.Param;

public interface UsersService {
    /**
     * 用户登录
     *
     * @param usersLoginDTO 用户信息
     * @return 用户对象
     */
    Users login(UsersLoginDTO usersLoginDTO);

    /**
     * 新增用户
     *
     * @param usersDTO 用户信息
     */
    void save(UsersDTO usersDTO);

    /**
     * 分页查询用户列表
     *
     * @param usersPageQueryDTO 查询条件
     * @return 分页结果
     */
    PageResult pageQuery(@Param("usersPageQueryDTO") UsersPageQueryDTO usersPageQueryDTO);


    /**
     * 根据用户ID获取用户信息
     *
     * @param userId 用户ID
     * @return 用户对象
     */
    Users getById(Long userId);


    /**
     * 根据用户ID更新用户信息
     *
     * @param usersDTO 用户信息
     */
    void updateByUserId(@Param("usersDTO") UsersDTO usersDTO);

    /**
     * 根据用户ID删除用户信息
     *
     * @param userId 用户ID
     */
    void delete(Long userId);

    /**
     * 用户注册
     * 
     * @param usersRegisterDTO 注册信息
     */
    void register(UsersRegisterDTO usersRegisterDTO);
}
